package com.kakarote.authorization.service;

import com.kakarote.authorization.entity.AuthorizationUser;
import com.kakarote.authorization.entity.VO.CompanyDetails;
import com.kakarote.authorization.entity.VO.LoginVO;
import com.kakarote.core.common.Result;
import com.kakarote.core.entity.UserInfo;

import javax.servlet.http.HttpServletRequest;

/**
 * @author z
 */
public interface AuthService {
    /**
     * 登录方法的处理
     *
     * @param user 用户对象
     * @return Result
     */
    public Result<LoginVO> login(UserInfo user);

    /**
     * 预登录
     *
     * @param user 用户对象
     * @return Result
     */
    public Result<?> doLogin(AuthorizationUser user);


    /**
     * 企业微信侧边栏登录
     *
     * @param user 用户对象
     * @return Result
     */
    public Result<?> wxLogin(AuthorizationUser user);


    /**
     * 权限验证
     *
     * @param authentication token
     * @param url            url
     * @param method         method
     * @return Result
     */
    Result<String> permission(String authentication, String url, String method);

    /**
     * 退出登陆
     *
     * @param authentication token
     */
    void logout(String authentication);

    /**
     * 获取手机端二维码登录地址
     *
     * @param request request
     * @return url
     */
    public String getLoginQrCode(HttpServletRequest request);

    /**
     * 获取当前是否登录成功
     *
     * @param token:key
     * @return 登录VO
     */
    public LoginVO getLoginQrInfo(String token);


    /**
     * 设置登录用户信息
     *
     * @param token 当前手机端登录token
     */
    public void setQrInfo(String token);

    /**
     * 选择企业后重新登录
     *
     * @param companyDetails 公司信息
     * @return result
     */
    public Result<?> reLogin(CompanyDetails companyDetails);


    /**
     * 单点鉴权
     *
     * @return Result
     */
    public Result<?> doSsoAuth(String platform);

    /**
     * 预登录
     *
     * @param code 统一身份认证Authorization Code
     * @return Result
     */
    public Result<?> doSsoLogin(String code, String platform);

}
